// 引入sme-router
import SMERouter from 'sme-router'

// 引入一个测试代码(只希望这个文件能够执行以下,被webpack编译)
// import './js/test'

// import './xxx/yyy/zzz/test.js' 配置路径别名之前
// import 'z/test.js' // 配置路径别名之后
// 引入模板
import index from 't/index'
import login from 't/login'
import admin from 't/adminList'
import adv from 't/advList'

// 引入发送请求的函数
// 注意: 如果要引入某个文件夹下面的index.js,则index.js可以忽略不写.引入路径写到这个文件夹就可以了
import { getAdmins } from './api'

// 引入moment.js. moment的作用: 帮我们格式化日期
import moment from 'moment'
window.moment = moment // 由于模板中可以直接使用全局的对象或方法,所以将moment添加到全局,然后在模板中直接进行格式化

// 创建SMERouter实例
// root是index.html中根标签的id名
// 注意: 前端路由都有两种模式: 1. history模式(路径和视图的一一对应关系,未来修改的也是路径) 2. hash模式(浏览器地址栏的hash值和视图的一一对应关系,未来修改的是hash值)
// 完整的url地址: 协议://域名:端口号/路径?查询字符串#hash值
// sme-router默认模式是hash模式
// html5这个参数,就是让sme-router由hash模式,改为history模式
const router = new SMERouter('root', 'html5')
// 由于模板中要直接使用router,所以直接将router添加到window
// 模板中中直接调用全局的变量
window.router = router

// 配置前端路由规则
// router.route('/路径',回调函数)
router.route('/login', (req, res) => {
  res.render(login())
})
router.route('/index', (req, res, next) => {
  //   console.log(res.subRoute()) //返回一个用于渲染二级路由结构的div标签
  // 注意: 由于首页中有子级路由(嵌套路由),所以应该使用next

  //   console.log(req.url) // 获取当前地址栏的路径
  next(
    index({
      // 将二级路由结构要渲染的div标签传入到模板中,在指定位置渲染出来
      subRoute: res.subRoute(),
      url: req.url,
    })
  )
})
// 配置首页的二级路由管理员和广告页面
// 注意: 二级路由的路径必须以一级路由的路径开头
router.route('/index/admin', async (req, res) => {
  //发送请求获取管理员数据
  const result = await getAdmins()
  console.log(result)
  if (result.code === 2) {
    // 提示用户
    toastr.success(result.message)
    // 拿到数据了
    res.render(admin(result.data))
  } else {
    // 请求响应成功了,但是没有拿到数据
    toastr.error(result.message)
  }
})
router.route('/index/adv', (req, res) => {
  res.render(adv())
})
router.route('*', (req, res) => {
  //   res.render('<h1>您查找的页面不存在</h1>')
  res.redirect('/login')
})

// http://localhost:9000/index/js/build.js
